#include <iostream>
#include <cstring>
using namespace std;
const int N=2*1e5+10;

int h[N],ne[N],to[N],w[N],idx;
int dis[N/2];

void add(int x,int y,int z)
{
	ne[idx]=h[x];
	to[idx]=y;
	w[idx]=z;
	h[x]=idx++;
}
void dfs(int u,int fa,int d)
{
	dis[u]=d;
	for(int i=h[u];~i;i=ne[i])
	{
		int j=to[i];
		if(j==fa)
			continue;
		dfs(j,u,d+w[i]);
	}
}

int main()
{
	int n;
	cin>>n;
	memset(h,-1,sizeof(h));
	for(int i=1;i<n;i++)
	{
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		add(x,y,z);
		add(y,x,z);
	}
	dfs(1,0,0);
	int root=1;
	for(int i=2;i<=n;i++)
	{
		if(dis[i]>dis[root])
			root=i;
	}
	
	memset(dis,0,sizeof(dis));
	dfs(root,0,0);
	int ret=0;
	for(int i=1;i<=n;i++)
		ret=max(ret,dis[i]);
	cout<<ret<<endl;
	cout<<ret*10+ret*(ret+1)/2<<endl;
	return 0;
}
